package javaer.starter.core.parser;

import javaer.starter.base.domain.dto.DependencyDTO;
import javaer.starter.base.domain.dto.ModuleDTO;
import javaer.starter.base.domain.dto.NewProjectDefinition;
import javaer.starter.base.domain.dto.PomParent;
import javaer.starter.core.metadata.PomXml;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * pom xml内容构建
 *
 * @author yangzhen
 * @date 2021/11/17 15:48
 * @since 1.0.0
 */
public interface IPomXmlParser {

    List<PomXml> parse(NewProjectDefinition projectDefinition) throws Exception;

    /**
     * 子类重写方法，构建pom中的parent信息
     *
     * @param projectDefinition
     * @return
     */
    PomParent getParent(NewProjectDefinition projectDefinition);

    /**
     * 子类重写方法，构建pom中的properties
     *
     * @param projectDefinition
     * @return
     */
    Map<String, String> getProperties(NewProjectDefinition projectDefinition);

    /**
     * 获取pom中父子关系的module标签的内容
     *
     * @param projectDefinition
     * @param module
     * @return
     */
    Set<String> getModules(NewProjectDefinition projectDefinition, ModuleDTO module);

    /**
     * 获取pom中的依赖
     *
     * @param projectDefinition
     * @param module
     * @return
     */
    Set<DependencyDTO> getDependencies(NewProjectDefinition projectDefinition, ModuleDTO module);

    /**
     * 获取artifactId
     *
     * @param projectDefinition
     * @param module
     * @return
     */
    String getArtifactId(NewProjectDefinition projectDefinition, ModuleDTO module);

}
